#pragma once
#include <unistd.h>
#include <sys/syscall.h>
/**
__builtin_expect 是 GCC 的内建函数，用于给编译器提供分支预测信息
参数 (表达式, 期望值)：这里表示我们期望 t_cachedTid == 0 的结果为 0（即false）
意思是：我们预期大多数情况下 t_cachedTid 不为0，不需要调用 cacheTid()

*/
namespace CurrentThread
{
    extern __thread int t_cachedTid;
    void cacheTid();
    inline int tid()
    {
        if(__builtin_expect(t_cachedTid == 0, 0))
        {
            cacheTid();
        }
        return t_cachedTid;
    }
}
